/**********************
* 익스플로러 버젼 찾기
*  ex : ONKEYPRESS="javascript:getNavigatorInfoStr();"
* @param : boolean
* @return : void
* @see
************************/
function getNavigatorInfoStr()
{
    var name = navigator.appName, ver = navigator.appVersion,
        ver_int = parseInt(navigator.appVersion), ua = navigator.userAgent, infostr;
    if(name == "Microsoft Internet Explorer")
    {
        if(ver.indexOf("MSIE 3.0") != -1) return "Internet Explorer 3.0x";
        if(ver_int != 4) return "Internet Explorer " + ver.substring(0, ver.indexOf(" "));

        var real_ver = parseInt(ua.substring(ua.indexOf("MSIE ") + 5));
        if(real_ver >= 7) infostr = "Windows Internet Explorer ";
        else infostr = "Microsoft Internet Explorer ";

        if(ua.indexOf("MSIE 5.5") != -1) return infostr + "5.5";
        else return infostr + real_ver + ".x";

        return "Internet Explorer";
    }
    else if(name == "Netscape")
    {
        if(parseInt(ua.substring(8, 8)) <= 4)
          return "Netscape " + ver.substring(0, ver.indexOf(" "));
        else if(ua.lastIndexOf(" ") < ua.lastIndexOf("/"))
          return ua.substring(ua.lastIndexOf(" "));
        else return "Netscape";
    }
    else return name;
}
/**********************
* 주민 번호 체크 로직
*  ex : validatePsn("xxxxxxxxxxxxx")
* @param : 주민번호 13자리 스트링값
* @return : boolean
* @see
************************/
function validatePsn(psnno, elem)
{
    var gsJuminNo = "";

    if (psnno == null || psnno == "" || psnno.length != 13)
    {
        if(elem != " undefined") i18nExtAlert(validatePsn_str1,"",null,_fU_localeCode,eval(elem));
        else i18nExtAlert(validatePsn_str1);
        return  false;
    }
    else
    {
        /*  숫자가 아닌것이 있으면: false; */
        var numreg = /[^0-9]/g;
        if ( numreg.test(psnno) )/* 숫자 아닌 값이 있는지 체크, 공백,영문,한글,특수기호 모두 체크 */
        {
            if(elem != " undefined") i18nExtAlert(validatePsn_str1,"",null,_fU_localeCode,eval(elem));
            else i18nExtAlert(validatePsn_str1);
            return false;
        }
    }


    /* 외국인일 경우 주민번호 검증 체크를 하지 않는다. (7번째 값이 5,6,7,8,9,0 일경우) */
    if(psnno.substring(6,7) == 0 || (psnno.substring(6,7) >= 5 && psnno.substring(6,7) <=9)) {
    	return true;
    }

   	/*  주민등록 체크섬 검사 */
    /* 주민등록 체크섬 주석처리 : 10.07.28 정유진 - 주민등록번호 바꾼 고객들도 인터넷뱅킹 이용할 수 있도록

    var psnSumCheckArr = new String("234567892345");
    var psnSum = 0;
    var psnSumResult = "";
    for (var i = 0; i < 13; i++)
    {
        psnSum = psnSum + (psnno.substring(i, i+1) * psnSumCheckArr.substring(i, i+1));
    }
    psnSumResult = (11 - (psnSum % 11)) % 10;

    if(psnSumResult == psnno.substring(12, 13) )
    {
        delete psnSumCheckArr;
        return true;
    }
    else
    {
        delete psnSumCheckArr;
        if(elem != " undefined") i18nExtAlert(validatePsn_str1,"",null,_fU_localeCode,eval(elem));
        else i18nExtAlert(validatePsn_str1);
        return false;
    }
    */
    return true;
}




/**********************
* 이메일 체크 함수
*  ex : validateEmail("aaaa@empas.com")
*  ex : validateEmail("aaaa@empas.com", document.getElementById('이메일1'), "INTER01", "INTER01")
* @param : varemail @을 포함하는 전자우편 문자열
* @param : elem 검증실패일 경우 초점을 받을 HTML객체, 없으면 지정하지 않거나 null을 지정
* @param : disallowed 대소문자 구별하지 않고 불허할 ID문자열, 없으면 지정하지 않거나 null을 지정
* @param : allowed 대소문자 구별하지 않고 예외적으로 허용할 ID문자열, 없으면 지정하지 않거나 null을 지정
* @return : boolean 검증결과(성공=true,실패=false)
************************/
function validateEmail(varemail,elem,disallowed, allowed)
{
    var emailReg = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/;
	var validateOK = false;
    if(!emailReg.test(varemail)){
	    validateOK = false;
        if(typeof elem != "undefined") {
            i18nExtAlert(validateEmail_str,"",null,_fU_localeCode,eval(elem));
        } else {
            i18nExtAlert(validateEmail_str);
        }
    }else if(typeof disallowed != "undefined" && varemail.split("@")[0].toUpperCase()==disallowed.toUpperCase()){
        if(typeof allowed != "undefined" && disallowed.toUpperCase() == allowed.toUpperCase()) {
            validateOK = true;
        } else {
            validateOK = false;
            if(typeof elem != "undefined") {
                i18nExtAlert(validateEmail_str1,"",null,_fU_localeCode,eval(elem));
            } else {
                i18nExtAlert(validateEmail_str1);
            }
        }
    }else{
	    validateOK = true;
    }

    return validateOK;
}

/**********************
* 사업자 번호 체크
*  ex : validateCrn("1111111111")
* @param : 사업자번호 스트링값
* @return : boolean
* @see
************************/
function validateCrn(crn, elem)
{
    if(crn.length != 10)
    {
        if(elem != "undefined") i18nExtAlert(validateCrn_str1,"",null,_fU_localeCode,eval(elem));
        else i18nExtAlert(validateCrn_str1);
        return false;
    }
    var sum = 0;
    var getlist =new Array(10);
    var chkvalue =new Array("1","3","7","1","3","7","1","3","5");

    for (var i=0;i<10;i++)
        getlist[i] = crn.substring(i,i+1);

    for (var i=0;i<9;i++)
        sum += getlist[i]*chkvalue[i];

    sum = sum +parseInt((getlist[8]*5)/10) ;
    var sidliy = sum%10;
    var sidchk = 0;

    if( sidliy != 0 )
        sidchk = 10 - sidliy;
    else
        sidchk = 0;

    delete chkvalue;
    if( sidchk != getlist[9] )
    {
        delete getlist;
        if(elem != undefined) i18nExtAlert(validateCrn_str1,"",null,_fU_localeCode,eval(elem));
        else i18nExtAlert(validateCrn_str1);
        return false;
    }
    delete getlist;
    return true;

}


/**********************
* 주민 사업자 번호 체크
*  ex : validatePsnCrn("1111111111") or validatePsnCrn("1111111111111")
* @param : 주민 사업자번호 스트링값
* @return : boolean
* @see
************************/
function validatePsnCrn(data,elem)
{
    data = getOnlyNumberFormat(data);/* 숫자만 입력 받기. */
    if(data.length == 13)
    {
        return validatePsn(data,elem);
    } else if(data.length == 10)
    {
        return validateCrn(data,elem);
    } else
    {
        if(elem != undefined) i18nExtAlert(validatePsnCrn_str,"",null,_fU_localeCode,eval(elem));
        else i18nExtAlert(validatePsnCrn_str);
        return false;
    }
}


/**********************
* 스크립트로 제어하는 대분류,중분류에 사용하는 셀렉트 박스 컨트롤
*  ex : dynamicChangeSelectBox(this,form1.targetname,target에들어갈array,true)
* @param : 이 스크립트를 실행하는 select box 객체
* @param : 이 객체의 onchange 이벤트에 의해 제어될 타겟 select box 객체 name
* @param : 타켓 셀렉트 박스에 조건에 따라서 들어갈 옵션이 들어있는 javascript array 객체명
* @param : 선택하세요.. 사용 여부
* @return : void
* @see
************************/
function dynamicChangeSelectBox(select,target,resultSet,nulluse,basicOption,selected)
{
    var upperState = "";
    if (select.upperValue != undefined)
        upperState = select.upperValue;

    var selectValue = "";

    if(upperState != "")
        selectValue = upperState+"_"+select.value;
    else
        selectValue = select.value;

    while(target.length > 0)
    {
        target.removeChild(target.children[0]);
    }

    if(nulluse == true)
    {
        var option = document.createElement("OPTION");
        //option.text= dynamicChangeSelectBasicOpt;
        if(basicOption != undefined) {option.text=basicOption;}
        option.value="";
        target.add(option);
    }

    if(resultSet[selectValue] != undefined )
    {
        var selectArray = resultSet[selectValue];

        if(selectArray.length != 0)
        {

            for(var t = 0 ; t < selectArray.length ; t++)
            {
                var option = new Option();
                option.value=selectArray[t][0];
                option.text=selectArray[t][1];

                target.add(option);

                if(option.value == selected && selected != 'undefined' && selected != undefined && selected != '' && selected != null ) {
					target[target.length-1].selected = true;
   				}
            }
        }

    }

    target.upperValue = selectValue;/* 방금 선택한 셀렉트 박스 값과 대분류를 통해서 왔을때의 값을 대상에 심어놓음으로서 키의 중복을 방지 */

    if(target.onchange != null)
        target.onchange();

}

/**********************
* 특수문자 있는지 확인하는 함수
*  ex : isSChar("...");
* @param : 특수문자가 포함된 문자열
* @return : boolean
* @see
************************/
function isSChar(fullstr){

    for(var i=0; i < fullstr.length; i++) {

        var str = substr(fullstr, i, 1);

        if ( str != NULL && length(str) > 0){
            if( IndexOf(str, "`") >= 0 ) return false;
            if( IndexOf(str, "~") >= 0 ) return false;
            if( IndexOf(str, "!") >= 0 ) return false;
            if( IndexOf(str, "@") >= 0 ) return false;
            if( IndexOf(str, "#") >= 0 ) return false;
            if( IndexOf(str, "$") >= 0 ) return false;
            if( IndexOf(str, "%") >= 0 ) return false;
            if( IndexOf(str, "^") >= 0 ) return false;
            if( IndexOf(str, "&") >= 0 ) return false;
            if( IndexOf(str, "*") >= 0 ) return false;
            if( IndexOf(str, "(") >= 0 ) return false;
            if( IndexOf(str, ")") >= 0 ) return false;
            if( IndexOf(str, "-") >= 0 ) return false;
            if( IndexOf(str, "_") >= 0 ) return false;
            if( IndexOf(str, "+") >= 0 ) return false;
            if( IndexOf(str, "=") >= 0 ) return false;
            if( IndexOf(str, "|") >= 0 ) return false;
            if( IndexOf(str, "[") >= 0 ) return false;
            if( IndexOf(str, "]") >= 0 ) return false;
            if( IndexOf(str, "{") >= 0 ) return false;
            if( IndexOf(str, "}") >= 0 ) return false;
            if( IndexOf(str, ":") >= 0 ) return false;
            if( IndexOf(str, ";") >= 0 ) return false;
            if( IndexOf(str, "<") >= 0 ) return false;
            if( IndexOf(str, ">") >= 0 ) return false;
            if( IndexOf(str, "?") >= 0 ) return false;
            if( IndexOf(str, ",") >= 0 ) return false;
            if( IndexOf(str, ".") >= 0 ) return false;
            if( IndexOf(str, "/") >= 0 ) return false;
        }

    }


    return true;
}



/**********************
* 알파벳 대문자, 숫자, 특수문자(- ? : ( ) . ,' +) 있는지 확인하는 함수
*  ex : isSChar("...");
* @param : 특수문자가 포함된 문자열
* @return : boolean
* @see
************************/
function isChkSChar(fullstr){

    for(var i=0; i < fullstr.length; i++) {

        var str = substr(fullstr, i, 1);

        if ( str != NULL && length(str) > 0){
            if( IndexOf(str, "`") >= 0 ) return false;
            if( IndexOf(str, "~") >= 0 ) return false;
            if( IndexOf(str, "!") >= 0 ) return false;
            if( IndexOf(str, "@") >= 0 ) return false;
            if( IndexOf(str, "#") >= 0 ) return false;
            if( IndexOf(str, "$") >= 0 ) return false;
            if( IndexOf(str, "%") >= 0 ) return false;
            if( IndexOf(str, "^") >= 0 ) return false;
            if( IndexOf(str, "&") >= 0 ) return false;
            if( IndexOf(str, "*") >= 0 ) return false;
            /* if( IndexOf(str, "(") >= 0 ) return false; */
            /* if( IndexOf(str, ")") >= 0 ) return false; */
            /* if( IndexOf(str, "-") >= 0 ) return false; */
            if( IndexOf(str, "_") >= 0 ) return false;
            /* if( IndexOf(str, "+") >= 0 ) return false; */
            if( IndexOf(str, "=") >= 0 ) return false;
            if( IndexOf(str, "|") >= 0 ) return false;
            if( IndexOf(str, "[") >= 0 ) return false;
            if( IndexOf(str, "]") >= 0 ) return false;
            if( IndexOf(str, "{") >= 0 ) return false;
            if( IndexOf(str, "}") >= 0 ) return false;
            /* if( IndexOf(str, ":") >= 0 ) return false; */
            if( IndexOf(str, ";") >= 0 ) return false;
            /* if( IndexOf(str, "'") >= 0 ) return false; */
            if( IndexOf(str, '"') >= 0 ) return false;
            if( IndexOf(str, "<") >= 0 ) return false;
            if( IndexOf(str, ">") >= 0 ) return false;
            /* if( IndexOf(str, "?") >= 0 ) return false; */
            /* if( IndexOf(str, ",") >= 0 ) return false; */
            /* if( IndexOf(str, ".") >= 0 ) return false; */
            if( IndexOf(str, "/") >= 0 ) return false;
        }

    }


    return true;
}


/**********************
* 값의 길이가 자리수와 같은지? focus 이동
*  ex : isLengthAndMoveFocus(this,3,document.IES5701P_1.numNO2)
* @param : 비교할 첫번째 문자열
* @param : 길이
* @param : 비교할 두번째 문자열
* @return : void
* @see
************************/
function isLengthAndMoveFocus(obj1,length,obj2) {

    if(isLength(obj1,length)) obj2.focus();

}

/**********************
* 값의 길이가 자리수와 같은지?
*  ex : isLength(this,3)
* @param : 비교할 첫번째 문자열
* @param : 길이
* @return : void
* @see
************************/
function isLength(obj, length) {

    if ( obj.value.length == length ) {
        return  true;
        } else {
        return false;
    }
}

/**********************
* 키값을 체크함(엔터키 입력시 ValidateForm실행)
*  ex :
* @param :
* @return : void
* @see
************************/
function check_key(event) {
    event = checkEvent(event);  /* 이벤트 값 가져오기 */
    if(event.which == 13) ValidateForm();
}


/**********************
* 폼의 객체에 금액을 넣는 함수
*  ex : fillMoney("frm1","money")
* @param : form이름
* @param : Object명
* @return : Object명
* @see
************************/
function fillMoney(elmNm, money)
{
    var ele;

    ele = document.getElementsByName(elmNm);

    ele.value = money;
}
/**********************
* 체크박스상태를 반환하는 함수
*  ex : isChecked("money")
* @param : Object명
* @return : boolean
* @see
************************/
function isChecked(eleName)
{
    var collection = document.getElementsByName(eleName);
    for(var i=0; i<collection.length; i++)
    {
        if(collection[i].checked)
        {
            return true;
        }
    }

    return false;
}

/**********************
* 체크박스에 체크로 세팅하는 함수
*  ex : setChecked("money")
* @param : Object명
* @return : void
* @see
************************/
function setChecked(eleName)
{
    var collection = document.getElementsByName(eleName);
    for(var i=0; i < collection.length; i++)
    {
        collection[i].checked = true;
    }
}

/**********************
* 체크박스에 체크로 해제하는 함수
*  ex : removeChecked("money")
* @param : Object명
* @return : void
* @see
************************/
function removeChecked(eleName)
{
    var collection = document.getElementsByName(eleName);
    for(var i=0; i<collection.length; i++)
    {
        collection[i].checked = false;
    }
}


/**********************
* 문자열 치환 스크립트
*  ex : stringMask("xxx-xxxx-xxxx", 9, 13, '*')
* @param : orgStr 변환전 문자열
* @param : strPos 변환될 처음위치
* @param : endPos 변환될 마지막위치
* @param : replaceChar 치환문자(1자가능)
* @return : str  치환된 문자열
* @see
************************/
function stringMask(orgStr, strPos, endPos, replaceChar)
{
    var chgStr = "";
    var strLen = orgStr.length;
    /* alert('strLen = [' + strLen + ']'); */

    if(orgStr == undefined || orgStr == "")
    {
        return orgStr;
    }
    else if(replaceChar == undefined || replaceChar == "")
    {
        return orgStr;
    }
    else if(strLen < strPos)
    {
        return orgStr;
    }
    else if(strLen < endPos)
    {
        return orgStr;
    }
    else if(strPos > endPos)
    {
        return orgStr;
    }

    chgStr = orgStr.substring(0, strPos);

    for(var idx = 0;idx < (endPos - strPos);idx++)
    {
        chgStr = chgStr + replaceChar;
    }

    chgStr = chgStr + orgStr.substring(endPos, strLen);
    return chgStr;
}
/**********************
* 이메일 합치기
*  ex : concatEmail('poo97', 'aaa.co.kr')
* @param : id
* @param : address
* @return : String 이메일주소
* @see
************************/
function concatEmail(id, address)
{
    if(id == "" || address == "")
    {
        return "";
    }
    var email = id+"@"+address;
    return email;
}

/**********************
* 이메일 나누기
*  ex : splitEmail('poo97@aaa.co.kr')
* @param : email address
* @return : Array  (poo97, aaa.co.kr)
* @see
************************/
function splitEmail(email)
{
    var emailArr = new Array(2);
    var atPos, emaillen;
    emaillen = email.length;

    /* 입력되는 이메일 값이 없거나 이메일의 길이가 5미만이면 에러발생 */
    if(email == "" && email.length < 4)
    {
        return "";
    }

    atPos = email.indexOf("@");

    emailArr[0] = email.substring(0, atPos);
    emailArr[1] = email.substring(atPos + 1, emaillen);


    return emailArr;

}
/**********************
* 전화번호 합치기
*  ex : concatPhoneNum('111','111','111', '')
*  ex : concatPhoneNum('111','111','111', '-')
* @param : num1, num2, num3, conatCharecter
* @return : String 전화번호
* @see
************************/
function concatPhoneNum(num1, num2, num3, hyphen)
{
    var phoneNum;
    if(num1 == "" || num2 == "" || num3 == "")
    {
        return "";
    }

    if(hyphen == "")
    {
        phoneNum = num1 + num2 + num3;
    }
    else
    {
        phoneNum = num1 + hyphen + num2 + hyphen + num3;
    }

    return phoneNum;
}
/**********************
* 전화번호 나누기
*  ex : splitPhoneNum('021113333')
*  ex : splitPhoneNum('0211113333')
*  ex : splitPhoneNum('0512223333')
*  ex : splitPhoneNum('05122223333')
* @param : phonenum 전화번호
* @return : Array  (지역번호, 국번, 전화번호)
* @see
************************/
function splitPhoneNum(phonenum)
{

/*
   2-3-4  9    9자리 타입
   2-4-4  10   10자리 A타입
   3-3-4  10   10자리 B타입
   3-4-4  11   11자리 타입
*/

    var phonelen = phonenum.length;
    var splitNum = new Array(3);

    if(phonenum == "")
    {
        return "";
    }


    if(phonelen < 9)
    {
        return "";
    }
    else if(phonelen == 9)
    {
        if(phonenum.substring(0, 2) == "02")
        {
            splitNum[0] = phonenum.substring(0, 2);
            splitNum[1] = phonenum.substring(2, 5);
            splitNum[2] = phonenum.substring(5, 9);
        }
    }
    else if(phonelen == 10)
    {
        if(phonenum.substring(0, 2) == "02")
        {
            splitNum[0] = phonenum.substring(0, 2);
            splitNum[1] = phonenum.substring(2, 6);
            splitNum[2] = phonenum.substring(6, 10);
        }
        else
        {
            splitNum[0] = phonenum.substring(0, 3);
            splitNum[1] = phonenum.substring(3, 6);
            splitNum[2] = phonenum.substring(6, 10);
        }
    }
    else if(phonelen == 11)
    {
        splitNum[0] = phonenum.substring(0, 3);
        splitNum[1] = phonenum.substring(3, 7);
        splitNum[2] = phonenum.substring(7, 11);
    }


    return splitNum;
}


/**********************
* 주민번호 나누기
*  ex : splitSsn('xxxxxxxxxxxxx')
*  ex : splitSsn('xxxxxx-xxxxxxx')
* @param : ssn 주민번호
* @return : Array  (생년월일,주민번호)
* @see
************************/
function splitSsn(ssn)
{
    var ssnLen = ssn.length;
    var splitSsn = new Array(2);
    var chgSsn;

    if(ssn == "")
    {
        return "";
    }
    else if(ssnLen < 13 || ssnLen > 14)
    {
        return "";
    }

    if(ssnLen == 13)
    {
        splitSsn[0] = ssn.substring(0,6);
        splitSsn[1] = ssn.substring(6,13);
    }

    if(ssnLen == 14)
    {
        splitSsn[0] = ssn.substring(0,6);
        splitSsn[1] = ssn.substring(7,14);
    }

    return splitSsn;


}
/**********************
* 주민번호 합치기
*  ex : concatSsn('xxxxxx', 'xxxxxxx', '-')
* @param : ssn1 주민번호앞 6자리
* @param : ssn2 주민번호뒤 7자리
* @return : str  '-'가 포함된 주민번호
* @see
************************/
function concatSsn(ssn1, ssn2, hyphen)
{
    var ssnStr;
    if(ssn1 == "" || ssn2 == "")
    {
        return "";
    }

    if(hyphen == "")
    {
        ssnStr = ssn1 + ssn2;
    }
    else
    {
        ssnStr = ssn1 + hyphen + ssn2;
    }

    return ssnStr;
}

/**********************
* 카드번호 나누기
*  ex : splitCardNo('xxxxxxxxxxxxxxxx')
* @param : ssn 주민번호
* @return : Array  (생년월일,주민번호)
* @see
************************/
function splitCardNo(cardno)
{
    var cardnoLen = cardno.length;
    var splitCardNo = new Array(4);
    var chgcardNo;

    if(cardno == "")
    {
        return "";
    }
    else if(cardnoLen != 16)
    {
        return "";
    }

    splitCardNo[0] = cardno.substring(0,4);
    splitCardNo[1] = cardno.substring(4,8);
    splitCardNo[2] = cardno.substring(8,12);
    splitCardNo[3] = cardno.substring(12,16);

    return splitCardNo;

}
/**********************
* 카드번호 합치기
*  ex : concatCardNo('1111', '2222', '3333', '4444',  '-')
* @param : cardno1 카드번호 첫번째 4자리
* @param : cardno2 카드번호 두번째 4자리
* @param : cardno3 카드번호 세번째 4자리
* @param : cardno4 카드번호 네번째 4자리
* @return : str  '-'가 포함된 카드번호
* @see
************************/
function concatCardNo(cardno1, cardno2, cardno3, cardno4, hyphen)
{
    var cardnoStr;
    if(cardno1 == "" || cardno2 == "" || cardno3 == "" || cardno4 == "")
    {
        return "";
    }

    if(hyphen == "")
    {
        cardnoStr = cardno1 + cardno2 + cardno3 + cardno4;
    }
    else
    {
        cardnoStr = cardno1 + hyphen + cardno2 + hyphen + cardno3 + hyphen + cardno4;
    }

    return cardnoStr;
}

/**********************
* 전화번호 마스킹
*  ex : maskPhoneNum("022223333")
*  ex : maskPhoneNum("0512223333")
*  ex : maskPhoneNum("0112223333")
*  ex : maskPhoneNum("01122223333")
* @param : phoneNum 전화번호
* @return : str  '-'가 포함되고 전화번호 마지막 4자리가 마스킹된 전화번호
* @see
************************/
function maskPhoneNum(phoneNum)
{
    var phoneSplitNum = splitPhoneNum(phoneNum);

    if(phoneSplitNum[0] == "" || phoneSplitNum[1] == "")
    {
        return "";
    }

    return concatPhoneNum(phoneSplitNum[0], phoneSplitNum[1], '****', '-');
}


/**********************
* 이메일 마스킹
*  ex : maskEmail("poo@gmail.com")
*  ex : maskEmail("poo@gmail.com", 2, 4, '*')
* @param : email @를 포함하는 전자우편주소 문자열
* @param : strPos 변환될 처음색인(0부터 시작)
* @param : endPos 변환될 마지막색인(0부터 시작, -1한 색인까지만 처리됨)
* @param : replaceChar 치환문자(1자가능)
* @return : str 마스킹된 전자우편주소문자열
************************/
function maskEmail(email, strPos, endPos, replaceChar)
{
    var emailSplitStr="";
    var emailIdLen=0;

    emailSplitStr = splitEmail(email);

    if(emailSplitStr[0] == "" || emailSplitStr[1] == "")
    {
        return "";
    }

    var emailIdLen = emailSplitStr[0].length;

    if(emailIdLen < 1)
    {
        return "";
    }

	var beginIndex = 2;
	var endIndex = emailIdLen;
	var maskChar = '*';
	if(typeof strPos != "undefined") {beginIndex = strPos;}
	else {beginIndex = 2;}
	if(typeof endPos != "undefined") {
		if(emailIdLen >= endPos){endIndex = endPos;}
		else {endIndex = emailIdLen;}
	} else {endIndex = emailIdLen;}
	if(typeof replaceChar != "undefined") {maskChar = replaceChar;}
	else {maskChar = '*';}
    var replaceEmailId = stringMask(emailSplitStr[0], beginIndex, endIndex, maskChar);

    return concatEmail(replaceEmailId, emailSplitStr[1]);

}

/**********************
* 주민번호 마스킹
*  ex : maskSsn("xxxxxxxxxxxxx")
* @param : ssn 주민번호
* @return : str  주민번호에 '-'가 포함되고 뒷자리 7자리가 마스킹된 문자열
* @see
************************/
function maskSsn(ssn)
{
    var ssnSplitStr = splitSsn(ssn);

    if(ssnSplitStr[0] == "" || ssnSplitStr[1] == "")
    {
        return "";
    }

    return concatSsn(ssnSplitStr[0], '*******', '-');

}

/**********************
* 카드번호 마스킹
*  ex : maskCardNo("1111222233334444")
* @param : cardno 카드번호
* @return : str  카드번호에 '-'가 포함되고 세번째와 네번째 카드번호가 '*'로 마스킹된 함수
* @see
************************/
function maskCardNo(cardno)
{
    var cardnoSplitStr = splitCardNo(cardno);

    if(splitCardNo[0] == "" || splitCardNo[1] == "")
    {
        return "";
    }

    return concatCardNo(cardnoSplitStr[0], cardnoSplitStr[1], '****', '****', '-');

}

/**********************
* 글자 체크
*  ex : onKeyUp="textCheck(f.MG_YJUKY01);"
* @param : 글자 필드
* @return : boolean값
* @see
************************/
function textCheck(textField)
{
    if ( textField.value.indexOf(";") != -1 ) {
        i18nExtAlert(textCheck_str);
        textField.value = "";
        textField.focus();
        return false;
    }
}


/**********************
* 글자 카운팅
*  ex : onKeyUp="textCounter(f.MG_YJUKY01, 9); textCheck(f.MG_YJUKY01);"
* @param : theField 필드명
* @param : maxChars 최대글자수
* @return : boolean값
* @see
************************/
function textCounter(theField,maxChars)
{
    var stKoreanInputYn = false;
    var maxLength = maxChars * 2;
    for (var i = 0; i < theField.value.length; i++)
    {
        var charCode = theField.value.charCodeAt(i);

        if (charCode > 128) {/* 한글일 경우 */
            stKoreanInputYn = true;
        }

        if(stKoreanInputYn){
            if(theField.value.length > maxChars) {
            	theField.blur();
                i18nExtAlertFn(textCounter_str1 + maxChars+ textCounter_str2, '', textCounterSizeCut.createDelegate(this,[theField, maxChars],1), language);
/*                theField.value=theField.value.substring(0,maxLength);
                theField.focus();
                return false;*/
            }
        } else {
            if(theField.value.length > maxLength) {
            	theField.blur();
                i18nExtAlert(textCounter_str3 + maxLength + textCounter_str2, '', textCounterSizeCut.createDelegate(this,[theField, maxChars],1), language);
/*                theField.value=theField.value.substring(0,maxLength);
                theField.focus();
                return false;
*/
            }
        }
    }
}

/**********************
* 글자 카운팅 (textCounter에서 i18nExtAlertFn이 뜬 뒤에 실행되어야할 부분)
* @param : theField 필드명
* @param : maxChars 최대글자수
* @see
************************/
function textCounterSizeCut(btn, theField, maxChars)
{
	theField.value=theField.value.substring(0,maxChars);
    //theField.focus();
    theField.blur();
    return false;
}


/**********************
* '-' 입력값
*  ex : formatHyphen
* @param : theField 필드명
* @param : maxChars 최대글자수
* @return : 없음
* @see
************************/
function formatHyphen(tx) {
    var oldv = "";
    if(oldv == tx.value) return;
    oldv = tx.value;
    tx.value = (event.keyCode < 32 ) ? oldv : formatKebact(oldv);
}

/**********************
* function onlyAcctNumber 계좌번호만 입력받음
*  ex : onlyAcctNumber()
* @param :
* @return : boolean
* @see
************************/
function onlyAcctNumber() {
    var re = /([^0-9])/;
    return CKKeyPro_Check(event.srcElement, re);

    var keyCode = event.keyCode ? event.keyCode :
            event.which ? event.which : event.charCode;
    if (keyCode != 13) {
        if( ( keyCode<47 || keyCode>57 ) && keyCode != 45 ) {
            event.returnValue = false;
        }
    }
}

/**********************
* function removeHyphen 날라갈때 하이픈 빼주기
*  ex : removeHyphen(obj)
* @param : 필드명
* @return : 없음
* @see
************************/
function removeHyphen(obj) {
    val = obj.value;

    str = "";
    strr = val.split("-");
    for (i=0;i<strr.length;i++){
        str += strr[i];
    }
    obj.value = str;
}

/**********************
* function formatComma 컴마 넣어줌
*  ex : formatComma(obj)
* @param : 필드명
* @return : 없음
* @see
************************/
function formatComma(tx) {              /* 컴마 삽입 */
    var oldv = "";
    if(oldv == tx.value) return;
    oldv = tx.value;
    tx.value = formatNumber(oldv);
}


/**********************
* function formatNumber(s) 자동으로 콤마 셋팅하기
*  ex : formatComma(obj)
* @param : 필드명
* @return : 컴마가 들어간 str
* @see
************************/
function formatNumber(s)
{
    var str  = s.replace(/\D/g,"");
        var len  = str.length;
        var tmp  = "";
        var tm2  = "";
        var i    = 0;
        while (str.charAt(i) == '0') i++;        //0만 입력되지 않게 하는 곳 삭제. 2003.01.08 신정섭
		if(str.length == i) return "0";
        str = str.substring(i,len);
        len = str.length;
        if(len < 3) {
            return str;
        }
    else {
            var sit = len % 3;
            if (sit > 0) {
                tmp = tmp + str.substring(0,sit) + ',';
                len = len - sit;
            }
            while (len > 3) {
                tmp = tmp + str.substring(sit,sit+3) + ',';
                len = len - 3;
                sit = sit + 3;
            }
            tmp = tmp + str.substring(sit,sit+3) + tm2;
            str = tmp;
        }
        return str;
}



/**********************
 * hasOnlyNumber()
 *     Spec        : 문자 방지(한글 제외)
 *     Argument    :
 *    Return       : boolean
 *    Example      : ONKEYPRESS="hasOnlyNumber();"
 ***********************/
function hasOnlyNumber(Obj){
    var re = /([^0-9])/;
    return CKKeyPro_Check(event.srcElement, re);

    var keyCode = event.keyCode ? event.keyCode :
            event.which ? event.which : event.charCode;
    if(keyCode > 222) return false;        /*  Select Box외 기타 이벤트 방지 */
    if (keyCode != 13) {
        if( !((keyCode>45 && keyCode<58) || (keyCode>95 && keyCode<106) || (keyCode>7 && keyCode<10) || (keyCode>36 && keyCode<41)) ){

            i18nExtAlert(hasOnlyNumber_str);
            if(Obj == null) {
                    event.returnValue = false;
                } else {
                    Obj.value = "";
                Obj.focus();
                }
        }
    }
}
/**********************
* function getCheckedValue 체크박스 체크된 값 가져오는 함수
*  ex : getCheckedValue(select)
* @param :엘리먼트 네임
* @return : 엘리먼트 값
* @see
************************/
function getCheckedValue(elementsName) {
    var ele = document.getElementsByName(elementsName);
    var val;

    for(i=0; i<ele.length; i++)
    {
        if(ele[i].checked == true) {
            val = ele[i].value;
            break;
        }
    }
    return val;
}
/**********************
* function getCheckedIndex 체크된 체크박스의 인덱스 값을 반환함
*  ex : getCheckedIndex(select)
* @param :엘리먼트 네임
* @return : 엘리먼트 값
* @see
************************/
function getCheckedIndex(elementsName) {
    var ele = document.getElementsByName(elementsName);
    var val;

    for(i=0; i<ele.length; i++)
    {
        if(ele[i].checked == true) {
            val = i;
            break;
        }
    }
    return val;
}

/**********************

* 쿠키값을 가져옴

* @param : 가져올 값의 이름
* @return : 반환된 쿠키값
* @see
************************/
function getCookie( name )
{
    var nameOfCookie = name + "=";
    var x = 0;
    while ( x <= document.cookie.length )
    {
        var y = (x+nameOfCookie.length);
        if ( document.cookie.substring( x, y ) == nameOfCookie )
        {
            if ( (endOfCookie=document.cookie.indexOf( ";", y )) == -1 )
                endOfCookie = document.cookie.length;
            return unescape( document.cookie.substring( y, endOfCookie ) );
        }
        x = document.cookie.indexOf( " ", x ) + 1;
        if ( x == 0 )
            break;
    }
    return "";
}

/**********************
* 치환값을 변경함
* @param : 원본 값
* @param : 변경대상값
* @param : 치환값
* @return : 치환된 값이 적용된 스트링
* @see
************************/
function replaceAll(srcStr, targetStr, replaceStr)
{

    var newPattern = new RegExp(targetStr, "g");

    return srcStr.replace(newPattern, replaceStr);
}
/**********************
* 브라우저가 익스플로러가 아닌경우에 이전페이지로 돌아감
* @param :
* @return :
* @see
************************/
function goReturnPage()
{
    var NaviInfo = getNavigatorInfoStr();

    if(NaviInfo.indexOf("Explorer") < 0)
    {
        history.back();
    }
}

/**********************
* 도움말 레이어용 관련 함수
* @param : elemId
* @return :
* @see
************************/
function showHidn(elemId) {
    var divs = document.getElementsByTagName("div");
    for(var i =0; divs.length > i; i++) {
        if(divs[i].className.indexOf("show_hide") != -1) {
            if(divs[i].getAttribute("id") == elemId) {
                divs[i].style.display = "block";
            } else {
                divs[i].style.display = "none";
            }
        }
    }
}
/**********************
* 도움말 레이어용 탭 온오프 함수
* @param : tabElem, meElem
* @return :
* @see
************************/
function tabOnOff(tabElem, meElem) {
    var links = tabElem.getElementsByTagName("a");
    for(var i = 0; links.length > i; i++) {
        if(links[i].getAttribute("href").indexOf(meElem) != -1) {
            /* links[i].firstChild.setAttribute(links[i].firstChild.getAttribute("src").replace("_off","_on")); */
            var tmpsrc = links[i].firstChild.getAttribute("src").replace("_off","_on");
            links[i].firstChild.setAttribute("src",tmpsrc);
            links[i].onmouseover ="";
            links[i].onmouseout = "";
        } else {
            var tmpsrc = links[i].firstChild.getAttribute("src").replace("_on","_off");
            links[i].firstChild.setAttribute("src",tmpsrc);
            links[i].onmouseover = function() {
                tabimgOver(this);
            };
            links[i].onmouseout = function() {
                tabimgOut(this);
            };
        }
    }
}
/**********************
* 도움말 레이어용 탭 이미지 오버함수
* @param : obj
* @return :
* @see
************************/
function tabimgOver(obj) {
    var obj = obj.firstChild;
    obj.setAttribute("src",obj.getAttribute("src").replace("_off","_on"));
}
/**********************
* 도움말 레이어용 탭이미지 아웃함수
* @param : obj
* @return :
* @see
************************/
function tabimgOut(obj) {
    var obj = obj.firstChild;
    obj.setAttribute("src",obj.getAttribute("src").replace("_on","_off"));
}
/**********************
* 도움말 레이어용 콘텐츠 리사이즈 함수
* @param : popId
* @return :
* @see
************************/
function ctResize(popId) {
    var contHeight = 431;
    var popElem = document.getElementById(popId);
    var divsions = popElem.getElementsByTagName("div");
    var h1Elem = popElem.getElementsByTagName("h1");
    for(var i=0; i < divsions.length; i++) {
    if(divsions[i].className != "x-window-body") continue;
    var xWinBody = divsions[i];
    var contElem = myNextSibling(xWinBody);
        if(contElem.clientHeight > xWinBody.clientHeight) {
           contElem.style.width = (parseInt(xWinBody.style.width) - 32) +"px";
           h1Elem[0].style.marginRight = "15px"
        } else {
          contElem.style.width = (parseInt(xWinBody.style.width) - 17) +"px";
          h1Elem[0].style.marginRight = "0"
        }
    }
}

/**********************
* 스트링이 영문으로만 되어있는지 판별
* @param : str
* @return :
* @see
************************/
function isAlpha(str) {
    var reg = /[^a-z]/gi;
    var result = !reg.test(str);
    delete reg;
    return result;
}

/**********************
* 스트링이 숫자로만 되어있는지 판별
* @param : str
* @return :
* @see
************************/
function isNumeric(str) {
    var reg = /[\D]/g;
    var result = !reg.test(str);
    delete reg;
    return result;
}

/**********************
* 스트링이 영문숫자로만 되어있는지 판별
* @param : str
* @return :
* @see
************************/
function isAlphaNumeric(str) {
    var reg = /[^\da-z]/gi;
    var result = !reg.test(str);
    delete reg;
    return result;
}



/**********************
* 문자열에서 숫자만 빼오기 체크 로직
* ex : getOnlyNumberFormat(form1.name.value)
* @param : 변환할 String 값
* @return : void
* @see
************************/
function getOnlyNumberFormat(sv)
{
    if(sv == null) return;
    var temp="";
    var ret = "";

    for(var index = 0 ; index < sv.length ; index++)
    {
        temp = parseInt(sv.charAt(index), 10);
        if( temp >= 0 || temp <= 9)
        {
            ret +=temp;
        }
    }
    return ret;
}



/**********************
* window.showModalDialog(arg1,arg2,arg3) 옵션 배열의 갯수를 정확히 넣어줘야 합니다. 값이 필요 없으면 '' 을 넣습니다.
*  ex :  openPopModal(a.html,"test",[넓이,높이,center여부,x좌표,y좌표,scroll여부,resizable여부])
*      openPopModal(a.html,"test",['200','200','yes','200','200','yes','yes'])
* @param : 주소
* @param : 넘겨줄 파라미터
* @param : 창관련 옵션(배열 형식)
* @return : void
* @see
************************/
function openPopModal(url, arg, option)
{
    var sFeatures = "";

    if(option != undefined) {
        var popWidth = option[0];
        var popHeight = option[1];
        var popCenter = option[2] == "" ? "yes" : option[2];
        var popXpos = option[3];
        var popYpos = option[4];
        var popScroll = option[5] == "" ? "yes" : option[5];
        var popResize = option[6] == "" ? "no" : option[6];

        var xpos = (screen.width - popWidth) / 2;
        var ypos = (screen.height - popHeight) / 2 ;

        sFeatures = "dialogWidth:"+popWidth+"px";
        sFeatures += ";dialogHeight:"+popHeight+"px";
        sFeatures += ";center:"+popCenter;
        /* sFeatures += ";dialogLeft:"+popXpos+"px"; */
        /* sFeatures += ";dialogTop:"+popYpos+"px"; */
        sFeatures += ";dialogLeft:"+xpos+"px";
        sFeatures += ";dialogTop:"+ypos+"px";


        sFeatures += ";scroll:"+popScroll;
        sFeatures += ";resizable:"+popResize;
    }

    if(arg == "")
        arg = this;/* 파라미터가 없을 경우 현재 부모창을 넘김. */

    return window.showModalDialog(url, arg, sFeatures);
}


/**********************
* window.showModelessDialog(arg1,arg2,arg3)  옵션 배열의 갯수를 정확히 넣어줘야 합니다. 값이 필요 없으면 '' 을 넣습니다.
*  ex :  openPopModeless(a.html,"test",[넓이,높이,center여부,x좌표,y좌표,scroll여부,resizable여부])
*        openPopModeless(a.html,"test",['200','200','yes','200','200','yes','yes'])
* @param : 주소
* @param : 파라미터
* @param : 창관련 옵션(배열 형식)
* @return : 오픈시킨 window
* @see
************************/
function openPopModeless(url, arg, option)
{
    var sFeatures = "";

    if(option != undefined) {
        var popWidth =  option[0];
        var popHeight =  option[1];
        var popCenter =  option[2] == "" ? "yes" : option[2];
        var popXpos =  option[3];
        var popYpos =  option[4];
        var popScroll =  option[5] == "" ? "yes" : option[5];
        var popResize =  option[6] == "" ? "yes" : option[6];

        var xpos = (screen.width - popWidth) / 2;
        var ypos = (screen.height - popHeight) / 2 ;


        var sFeatures = "dialogWidth:"+popWidth+"px";
        sFeatures += ";dialogHeight:"+popHeight+"px";
        sFeatures += ";center:"+popCenter;

        /* sFeatures += ";dialogLeft:"+popXpos+"px"; */
        /* sFeatures += ";dialogTop:"+popYpos+"px"; */
        sFeatures += ";dialogLeft:"+xpos+"px";
        sFeatures += ";dialogTop:"+ypos+"px";

        sFeatures += ";scroll:"+popScroll;
        sFeatures += ";resizable:"+popResize;
    }

    if(arg == "")
        arg = this;/* 파라미터가 없을 경우 현재 부모창을 넘김. */

    var win = window.showModelessDialog(url, arg, sFeatures);
    return win;
}



/**********************
* window.open(arg1,arg2,arg3)  옵션 배열의 갯수를 정확히 넣어줘야 합니다. 값이 필요 없으면 '' 을 넣습니다.
*  ex :  openWinPop(a.html,"새창임","form 이름",[넓이,높이,x좌표,y좌표,scroll여부,resizable여부,주소창여부,menu var 여부,toolbar 여부,상태바 여부])
*              openWinPop(act,"popupWin","form2") -> form 데이타를 submit 하면서 일반적인 창 크기
*              openWinPop("test.web","popupWin","form2",["500","600"]) -> form 데이타를 submit 하면서 팝업 사이즈가 500,600 을 띄울 경우
*              openWinPop(act,"popupWin"); form 데이타없이 일반적인 크기의 팝업을 띄울경우
*              openWinPop("test.web?a=1","popupWin","",["500","600"]) -> form 데이타없이 팝업을 띄울 경우
*              scroll은 default=yes임 , center가 yes로 되어있어도 x,y좌표가 있으면 좌표에 따른다.
* @param : 주소
* @param : 윈도우 이름
* @param : 창관련 옵션(배열 형식)
* @param : 암호화 여부(인자값을 안넣거나 'true'값을 넣으면 암호화 됨, 'false'값을 넣으면 암호화 안됨
* @return : void
* @see
************************/
function openWinPop(url, popname , formName , option, isEnc)
{
    var sFeatures ="";
    if(option != undefined){
        var popWidth = option[0] == "" ? "600" : option[0];
        var popHeight = option[1] == "" ? "450" : option[1];
        var popLeft = option[2] == "" ? 0 : option[2];
        var popTop = option[3] == "" ? 0 : option[3];
        var popScroll = option[4] == "" ? "no" : option[4];
        var popResize = option[5] == "" ? "yes" : option[5];
        var popLocation = option[6] == "" ? "no" : option[6];
        var popMenubar = option[7] == "" ? "no" : option[7];
        var popToolbar = option[8] == "" ? "no" : option[8];
        var popStatus = option[9] == "" ? "no" : option[9];

        var xpos = (screen.width - popWidth) / 2;
        var ypos = (screen.height - popHeight) / 2 ;

        sFeatures = "width="+popWidth;
        sFeatures += ",height="+popHeight;

        /* sFeatures += ",left="+popLeft; */
        /* sFeatures += ",top="+popTop; */
        sFeatures += ",left="+xpos;
        sFeatures += ",top="+ypos;

        sFeatures += ",scrollbars="+popScroll;
        sFeatures += ",resizable="+popResize;
        sFeatures += ",location="+popLocation;
        sFeatures += ",menubar="+popMenubar;
        sFeatures += ",toolbar="+popToolbar;
        sFeatures += ",status="+popStatus;

    }

    if(formName != undefined && formName != "") {
        var newWin = "";
        /* F/W 이종원 대표 요청으로 수정함 09.04.06 */
        if(_fU_localeCode == "KO")
        {
            newWin = window.open(context_path_str+'/cxw/jsp/common/notice/process_view_KO.html', popname, sFeatures);
        }
        else
        {
            newWin = window.open(context_path_str+'/cxw/jsp/common/notice/process_view_EN.html', popname, sFeatures);
        }
        var submitform = eval("document."+formName);

        /* submitform 길이가 0일 경우 'POST IS NULL' alert창이 뜨는 문제 방지. */
        if(submitform.elements.length == 0) {
            var element = document.createElement('INPUT');
            element.type = "hidden";
            submitform.appendChild(element);
        }

        submitform.action=url;
        submitform.target=popname;
        submitform.submit();
    } else {
/*         var newWin = window.open(url, popname, sFeatures); */
/*         newWin.focus(); */
/*         return newWin; */
        var newWin = window.open(url, popname, sFeatures);
    }
}

/**********************
* window.showModalDialog(arg1,arg2,arg3) 옵션 배열의 갯수를 정확히 넣어줘야 합니다. 값이 필요 없으면 '' 을 넣습니다.
*  ex : openPopModal(a.html,"test",[넓이,높이,center여부,x좌표,y좌표,scroll여부,resizable여부])
*           openPopModal(a.html,"test",['200','200','yes','200','200','yes','yes'])
* @param : 주소
* @param : 넘겨줄 파라미터
* @param : 창관련 옵션(배열 형식)
* @return : void
* @see
************************/
function openDetailPop(url, popname , formName , option)
{
    var sFeatures ="";
    if(option != undefined){
        var popWidth = option[0] == "" ? "600" : option[0];
        var popHeight = option[1] == "" ? "450" : option[1];
        var popLeft = option[2] == "" ? 0 : option[2];
        var popTop = option[3] == "" ? 0 : option[3];
        var popScroll = option[4] == "" ? "no" : option[4];
        var popResize = option[5] == "" ? "yes" : option[5];
        var popLocation = option[6] == "" ? "no" : option[6];
        var popMenubar = option[7] == "" ? "no" : option[7];
        var popToolbar = option[8] == "" ? "no" : option[8];
        var popStatus = option[9] == "" ? "no" : option[9];

        var xpos = (screen.availWidth - 820) / 2;
        var ypos = (screen.availHeight - 400) / 2 ;

            /* var cx = document.body.clientWidth;
            var cy = document.body.clientHeight;
            var sw = screen.availWidth;
            var sh = screen.availHeight;
            var px = (sw-cx)/2;
            var py = (sh-cy)/2
            window.moveTo(px, py);*/
        /*
        sFeatures = "width=820px";
        sFeatures += ",height=400px";
        */
        sFeatures = "width="+popWidth;
        sFeatures += ",height="+popHeight;
        sFeatures += ",left="+xpos;
        sFeatures += ",top="+ypos;


        sFeatures += ",scrollbars=yes";
        sFeatures += ",resizable="+popResize;
        sFeatures += ",location="+popLocation;
        sFeatures += ",menubar="+popMenubar;
        sFeatures += ",toolbar="+popToolbar;
        sFeatures += ",status="+popStatus;

        /* alert(sFeatures) */
    }

    if(formName != undefined && formName != "") {
        var newWin = window.open('', popname, sFeatures);

        var submitform = eval("document."+formName);

        submitform.action=url;
        submitform.target=popname;
        submitform.submit(); 
    } else {
         var newWin = window.open(url, popname, sFeatures);
         newWin.focus();
         return newWin;

    }

}

